﻿#pragma once

#include <AIS_Triangulation.hxx>
#include <Graphic3d_ArrayOfTriangles.hxx>
#include <Graphic3d_AspectFillArea3d.hxx>
#include <Poly_Triangulation.hxx>
#include <Prs3d_ShadingAspect.hxx>
#include <TColStd_HPackedMapOfInteger.hxx>

DEFINE_STANDARD_HANDLE(AIS_Mesh, AIS_Triangulation)

class AIS_Mesh : public AIS_Triangulation
{
    DEFINE_STANDARD_RTTIEXT(AIS_Mesh, AIS_Triangulation)

  public:
    AIS_Mesh(const Handle(Poly_Triangulation) & aTriangulation);

    Standard_EXPORT virtual void Compute(const Handle(PrsMgr_PresentationManager) & thePrsMgr,
                                         const Handle(Prs3d_Presentation) & thePrs,
                                         const Standard_Integer theMode) Standard_OVERRIDE;

    Standard_EXPORT virtual void ComputeSelection(const Handle(SelectMgr_Selection) & theSel,
                                                  const Standard_Integer theMode) Standard_OVERRIDE;

    void SetSelectionColor(float r, float g, float b, float a);
};
